In conventional graphical user interface (GUI) of software such as software as a service (SaaS) must be tested to validate the correctness of the user interface element by acquiring and validating their attributes and appearances. An approach to testing in the industry is to programatically crawl through the GUI page making assertions for the correctness for the attributes for each of the elements of interest. This approach is only efficient and effective if the objective of the test is limited to a number of properties of a few elements. However, this approach becomes cumbersome if the GUI pages have greater numbers of elements because the number of assertions increases in an exponential manner as both the number of elements and their possible attributes increases. Another drawback of this approach is that it is not inherently extensible. Thus, a test written for a GUI page cannot be directly used for another GUI page since the objective of the test which concerns what needs to be verified is also tied to the actual verification implementation. A typical enterprise software application has numerous visual elements of various types and numerous attributes for each of its pages. Yet another level of complexity is introduced by the fact that these elements are not independent. Even a single user interaction can trigger changes in a number of the elements on the page or related pages which can either be synchronous or asynchronous.
Unfortunately, conventional GUI page testing approaches might become inefficient and ineffective if, for example, the GUI page being tested is relatively complex. The conventional crawling of the GUI pages may also be relatively slow.
Accordingly, it is desirable to provide techniques enabling efficient and flexible testing of the GUI page to improve performance and efficiency of the testing of the GUI software.